import request from './request'
import {
  buildQueryString
} from "../utils/url"
/**
 * 根据商品ID获取商品详情信息
 * @function getProductDetailInfoByProductId
 * @param {number|string} id - 商品的唯一标识符（ID）
 * @returns {Promise} 返回一个Promise对象，解析后为商品详情数据
 *                    数据通常包含商品名称、价格、规格、图片等信息
 * @description 发起GET请求到/product接口，通过id参数查询对应的商品详情
 */
export const getProductDetailInfoByProductId = (id) => {
  // 调用request工具的get方法，请求商品详情接口，携带商品id作为查询参数
  return request.get(`/product?id=${id}`)
}

/**
 * 根据商品ID获取商品参数信息
 *
 * 该函数通过调用后端API接口，根据商品唯一标识ID查询对应的商品参数详情，
 * 包括生产企业、注册证信息、规格、生产日期等参数
 *
 * @param {number|string} id - 商品唯一标识ID，不能为空
 * @returns {Promise<Object>} 返回一个Promise对象，resolve时为商品参数信息对象，结构如下：
 *   {
 *     manufacturingEnterprise: string, 生产企业名称
 *     registrationNumber: string, 产品注册证编号
 *     medicalInsuranceNumber: string, 医保编号
 *     registrationIdPhoto: string, 注册证照片URL
 *     specification: string, 商品规格型号
 *     manufacturingDate: string, 生产日期(ISO格式)
 *     expiryDate: string 有效期至(ISO格式)
 *   }
 * @example
 * // 获取ID为1001的商品参数
 * getProductParameterInfoByProductId(1001)
 *   .then(param => console.log('商品参数:', param))
 *   .catch(error => console.error('获取失败:', error));
 */
export const getProductParameterInfoByProductId = (id) => {
  return request.get(`/parameter?id=${id}`)
}


/**
 * 搜索商品列表（支持关键字、分类、品牌搜索，多维度排序）
 * @param {number} searchType - 搜索类型：0-关键字搜索，1-分类搜索，2-品牌搜索
 * @param {number} sort - 排序方式：0-综合排序，1-销量排序，2-价格从低到高，3-价格从高到低，4-上架时间排序
 * @param {string} keyword - 搜索关键词：普通搜索（searchType=0）时为关键字，分类搜索（searchType=1）时为分类ID，品牌搜索（searchType=2）时为品牌ID
 * @param {number} page - 分页页码（从1开始）
 * @param {number} pageSize - 每页条数
 * @returns {Promise<Result<PageResult<ProductEchoVo>>>} 接口返回结果
 *   - Result：统一响应体，包含成功状态、响应信息、响应数据
 *   - PageResult<ProductEchoVo>：分页商品列表数据
 *     - total：总记录数
 *     - list：商品列表数组（ProductEchoVo包含商品ID、名称、图片、价格等信息）
 *     - page：当前页码
 *     - pageSize：每页条数
 *     - totalPage：总页数
 * @example
 * // 1. 关键字搜索：搜索"手机"，综合排序，第1页，每页10条
 * queryProductListConditional(0, 0, "手机", 1, 10);
 * 
 * // 2. 分类搜索：搜索分类ID=123的商品，价格从低到高排序，第2页，每页20条
 * queryProductListConditional(1, 2, "123", 2, 20);
 * 
 * // 3. 品牌搜索：搜索品牌ID=456的商品，上架时间排序，第1页，每页15条
 * queryProductListConditional(2, 4, "456", 1, 15);
 */
export const queryProductListConditional = (searchType, sort, keyword, page, pageSize) => {
  const param = buildQueryString({
    searchType,
    sort,
    keyword,
    page,
    pageSize
  })
  return request.get(`/product/list?${param}`)
}

export const queryProductDetailedInfo = (productId) => {
  return request.get(`/product/detail?id=${productId}`)
}